Skip to content

Conversation

@clover-yan
Copy link

問題描述

在任何情況下,無論地區詞轉換選擇如何,都有 实时即時

:fcitx5-android 在繁體狀態下無法打出 實時

分析

STPhrases.txt 中有 实时即時 的轉換。

实时 即時

這個錯誤的轉換在 #826 被引入。但 STPhrases.txt 不應該包括地區詞轉換,否則會導致異常。

解決方案

從 STPhrases.txt 移除該轉換。

參考了 Wikipedia 的公共轉換組,只在 IT 轉換組中找到了規則 Item('real-time', '实时=>zh-tw:即时; 实时=>zh-hk:即时; 实时=>zh-mo:即时;');考慮到該詞的轉換並非在任何情況下都適用,故僅在 TWPhrasesIT.txt 中對應添加轉換。

後續

寫了一個 Python 腳本,基於 pypinyin 庫檢查 STPhrases.txt 中是否有其他錯誤的情況。

pinyincheck.py
import pypinyin
import re

def check_pinyin_similarity_with_tones(file_path):
    """
    讀取文件,判斷每行中文詞組的帶聲調拼音(聲調號碼在後)是否相同,
    並輸出不同的行和行號。

    Args:
        file_path (str): 文件路徑。
    """
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            for line_num, line in enumerate(f, 1):
                parts = re.split(r'[ \t]+', line.strip())

                if len(parts) >= 2:
                    for i in range(len(parts) - 1):
                        phrase1 = parts[0]
                        phrase2 = parts[i + 1]

                        res = tuple(zip([s for s in pypinyin.pinyin(phrase1, style=pypinyin.Style.TONE3, heteronym=True)], [s for s in pypinyin.pinyin(phrase2, style=pypinyin.Style.TONE3, heteronym=True)]))

                        for pinyin1, pinyin2 in res:
                            if not set(pinyin1) & set(pinyin2):
                                print(f"行號: {line_num}, 內容: {line.strip()}, 拼音1: {pinyin1}, 拼音2: {pinyin2}")
                elif len(parts) > 0 and line.strip() != "":
                    print(f"警告: 行號 {line_num} 的格式不正確,跳過: {line.strip()}")

    except FileNotFoundError:
        print(f"錯誤: 文件 '{file_path}' 不存在。請檢查文件路徑。")
    except Exception as e:
        print(f"處理文件時發生錯誤: {e}")

if __name__ == "__main__":
    file_path = input("請輸入文件路徑: ")
    check_pinyin_similarity_with_tones(file_path)

目測結果均爲假陽性。運氣就是這麼好。

@lotem
Copy link
Collaborator

lotem commented Jul 15, 2025

刪除這條轉換規則「实时→實時」應該也行吧?
因爲這倆個字按字轉換都有唯一結果。

Copy link
Collaborator

@lotem lotem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

謝謝!
既然運氣好,不如就這樣吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants